            BOI.9. (Rezervoare). Un sistem de p[strare a a petrolului este format din
n(n200) rezervoare de volume date (maxim 100 unit[i de volum fiecare) i
n-1 conducte de volum neglijabil care leag[ rezervoarele dou[ cte dou[. 
Nu exist[ rezervoare izolate. Pentru umplerea lor se alege un rezervor s numit
surs[, n care se monteaz[ o pomp[. Sursa s r[mne permanent goal[ iar petrolul
este pompat prin fiecare din conductele t1,t2,.. .,tk conectate la s (o unitate
de volum prin fiecare conduct[ ntr-o unitate de timp) pn[ cnd toate rezervoarele,
nafar[ de surs[, sunt umplute. Deci procesul de umplere va necesita un timp egal
cu maximum dintre V1,V2,...,Vk, unde Vi,1ik este suma volumelor rezer-
voarelor umplute prin conducta ti.
Problem[:
Fiind dat sistemul de mai sus s[ se afle rezervorul surs[ optim astfel nct procesul
de umplere s[ se realizeze n cel mai scurt timp.
Intrare: Intrarea va fi dat[ ntr-un fiier ASCII de forma:
linia 1                                n- num[rul de rezervoare
linia i(2in+1)  v(i-1)                - volumul rezervorului i-1, num[r natural
linia i(n+2i2n) r q                               -  ntre rezervoarele r i q exist[ o
conduct[. Numerele r i q sunt separate printr-un singur spaiu.
Ieire: Ieirea va fi standard (ecran) i conine dou[ linii cu structura:
The number of optimal source is: ...
The optimal time is: ...
================================================
            BOI.9. (Gheorghi[ Valentin, elev Ploieti)
           Se calculeaz[ maximul dintre suma volumelor pe componentele conexe care
se obin prin suprimarea fiec[rui nod. Se consider[ apoi sursa n nodul pentru care
maximul determinat este cel mai mic. Algoritmul este polinomial.
program rezervoare;
uses crt;
var a:array[1..1000,1..2] of integer;
    n,i,j,k,min,max:integer;
    c,b:array[1..1000] of integer;
    f:text;
    mlocal,temp,minim:longint;
    tt:integer;
begin
  clrscr;
  assign(f,'input.1'); reset(f); readln(f,n);
  for i:=1 to n do readln(f,b[i]);
  for i:=1 to n-1 do readln(f,a[i,1],a[i,2]);
  close(f);
  minim:=100*n;
  for i:=1 to n do begin
     for j:=1 to n do c[j]:=j;
     for j:=1 to n-1 do
       if ((a[j,1]<>i) and (a[j,2]<>i)) then begin
                 min:=c[a[j,1]]; max:=c[a[j,2]];
                 if min>c[a[j,2]] then begin
                    min:=c[a[j,2]]; max:=c[a[j,1]] end;
                 for k:=1 to n do
                   if c[k]=max then c[k]:=min;
                                            end;
    mlocal:=0;
    for j:=1 to n do
      if j<>i then begin
         temp:=0;
         for k:=1 to n do
           if c[k]=j then temp:=temp+b[k];
           if temp>mlocal then mlocal:=temp end;
    if mlocal<minim then begin
            minim:=mlocal; tt:=i; end;
                 end;
  clrscr;
  writeln('The number of optimal source is ',tt);
  writeln('The optimal time is ',minim);
end.
-----------------------------------------------
